<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        let count = 0;
        function fn() {
            count++;
            const p = new Promise((resolve, reject) => {
                const time = Math.floor(Math.random() * 4000 + 1000);
                const timer = setTimeout(() => {
                    console.log('--------------开始-------------')
                    if (time >= 3000) {
                        clearTimeout(timer)
                        resolve(time)
                    }
                    else {
                        reject(new Error('我是第'+count+'个出错了'))
                    }
                    console.log('--------------结束-------------')

                }, time)
            })

            return p;
        }

        // const res = fn(); // res 是一个promise对象 

        // res.then(function(res){
        //     console.log('promise状态变成了成功,所以我收到了',res);
        // })

        // res.catch(function(err){
        //     console.log('promise状态变成了失败,所以我收到了',err.message);
        // })
        // fn()
        //     .then(function(res){
        //     console.log('promise状态变成了成功,所以我收到了',res);
        // })
        //     .catch(function(err){
        //     console.log('promise状态变成了失败,所以我收到了',err.message);
        // })



        //  夏  饮料 
        //  杜  面包  饮料完成以后再买
        //  朱  水果  面包完成以后再买 
        //  魏  牛奶  水果完成以后再买 

        // fn()
        //     .then(res=>{
        //         console.log('饮料买完了',res)
        //         fn()
        //             .then(res=>{
        //                 console.log('买包买完了',res)
        //                 fn()
        //                 .then(res=>{
        //                     console.log('水果买完了',res)
        //                     fn()
        //                     .then(res=>{
        //                         console.log('牛奶买完了',res)
        //                     })
        //                     .catch(error=>{
        //                         console.log('牛奶没买到',error.message)
        //                     })
        //                 })
        //                 .catch(err=>{
        //                     console.log('水果没买到',err.message)
        //                 })
        //             })
        //             .catch(err=>{
        //                 console.log('面包没买到',err.message)
        //             })
        //     })
        //     .catch(err=>{
        //         console.log('饮料没买到',err.message)
        //     })
        

        // 这种写法是链式调用  
        fn()
        .then(res=>{
            console.log('饮料买到了',res);
            return fn()
        })
        .then(res=>{
            console.log('面包买到了',res);
            return fn()
        })
        .then(res=>{
            console.log('水果买到了',res);
            return fn()
        })
        .then(res=>{
            console.log('牛奶买到了',res);
        })
        .catch(err =>{
            console.log(err);
        })
    </script>
</body>

</html>